安卓无法转换java类型的值。双到字符串
我已经尝试了许多解决方案,这段代码在早上为我工作,现在当我运行它时,它显示了一个未知的错误,这是我的用户类
我甚至试着把它转换成doubl
也没用。请帮助我
public class createuser {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getIssharing() {
return issharing;
}
public void setIssharing(String issharing) {
this.issharing = issharing;
}
public String getLat() {
return lat;
}
public void setLat(String lat) {
this.lat = lat;
}
public String getLng() {
return lng;
}
public void setLng(String lng) {
this.lng = lng;
}
public String getImgurl() {
return imgurl;
}
public void setImgurl(String imgurl) {
this.imgurl = imgurl;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public createuser() {
}
public String name, email, password, code, issharing, lat, lng,
imgurl, userid;
public createuser(String name, String email, String password, String
code, String issharing, String lat, String lng, String imgurl, String
userid) {
this.name = name;
this.email = email;
this.password = password;
this.code = code;
this.issharing = issharing;
this.lat = lat;
this.lng = lng;
this.imgurl = imgurl;
this.userid = userid;
}
}
这是我的运行时类
code = (EditText)findViewById(R.id.editText);
submit = (Button)findViewById(R.id.button);
firebaseDatabase = FirebaseDatabase.getInstance();
auth = FirebaseAuth.getInstance();
user = auth.getCurrentUser();
reference =
firebaseDatabase.getInstance().getReference().child("users");
currentreference =
firebaseDatabase.getInstance().getReference().child("users")
.child(user.getUid());
current_user_id = user.getUid();
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
query =
reference.orderByChild("code").equalTo(code.getText().toString());
query.addListenerForSingleValueEvent
(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot
dataSnapshot) {
if (dataSnapshot.exists())
{
createuser createuser = null;
for (DataSnapshot childDss :
dataSnapshot.getChildren())
{
createuser =
childDss.getValue(createuser.class);
join_user_id = createuser.userid;
circlereference =
firebaseDatabase.getInstance().getReference().child("users")
.child(join_user_id).child("Circlemembers");
circlejoin circlejoin = new
circlejoin(current_user_id);
circlejoin circlejoin1 = new
circlejoin(join_user_id);
circlereference.child(user.getUid()).setValue(circlejoin)
.addOnCompleteListener(new
OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull
Task<Void> task) {
if (task.isSuccessful())
{
Toast.makeText(getApplicationContext(),"user joined
circle",Toast.LENGTH_SHORT).show();
startActivity(new
Intent(joincircle.this,userlocation.class));
}
}
});
}
}
else
{
Toast.makeText(getApplicationContext(),"circle
code is invalid",Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError
databaseError) {
}
});
}
});
}
实时数据库是这样的
users
NwKzgM0NhuY7gT7eFiN9nwzumMG2
code: "7260232"
email: "trackit385@gmail.com"
imgurl: "na"
issharing: "false"
lat: 17.3932339
lng: 78.4440638
name: "tejesh"
password: "kinglion"
userid: "NwKzgM0NhuY7gT7eFiN9nwzumMG2"
任何人请帮助我我无法解决它我的错误是
com.google.firebase.database.DatabaseException: Failed to convert
value of type java.lang.Double to String
# 1 楼答案
您将得到以下错误:
因为
createuser
类中的lat
和lng
字段是String
类型,而在数据库中,两个文件都有double
值,这是不正确的。要解决这个问题,只需将类中字段的类型更改为double
公共类createuser{
# 2 楼答案
我不知道,但是这个类缺少所有的字段声明。那应该是
Double lat, Double lng
。当字段为String
且setter方法设置double
时,这无法工作,至少除非添加匹配的setter。而且Double
和double
不是相同的数据类型。您将原语与复杂的数据类型(在这里,它们也有两种不同的蓝色)混淆,并且还定义了setter,但没有在构造函数中使用它们。。。第二种可能是口味的问题,但第一种在语法上是错误的,因为它意味着:按值调用与按引用调用。该类可能应该简单地称为User
,因为您可能会在整个应用程序中使用它